/*This file is prepared for Doxygen automatic documentation generation.*/
//! \file *********************************************************************
//!
//! \brief Specific enumeration process requests header file
//!
//! - Compiler:           IAR EWAVR and GNU GCC for AVR
//! - Supported devices:  AT90USB162, AT90USB82
//!
//! \author               Atmel Corporation: http://www.atmel.com \n
//!                       Support and FAQ: http://support.atmel.no/
//!
//! ***************************************************************************

/* Copyright (c) 2009 Atmel Corporation. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *
 * 3. The name of Atmel may not be used to endorse or promote products derived
 * from this software without specific prior written permission.
 *
 * 4. This software may only be redistributed and used in connection with an Atmel
 * AVR product.
 *
 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE EXPRESSLY AND
 * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _USB_SPECIFIC_REQUEST_H_
#define _USB_SPECIFIC_REQUEST_H_

//_____ I N C L U D E S ____________________________________________________

#include "config.h"


//_____ M A C R O S ________________________________________________________

const extern code S_usb_device_descriptor usb_dev_desc;
const extern code S_usb_user_configuration_descriptor usb_conf_desc;
const extern code S_usb_manufacturer_string_descriptor
    usb_user_manufacturer_string_descriptor;
const extern code S_usb_product_string_descriptor
    usb_user_product_string_descriptor;
#if (USB_DEVICE_SN_USE==ENABLE)
const extern code S_usb_serial_number usb_user_serial_number;
#endif
const extern code S_usb_language_id usb_user_language_id;


//_____ D E F I N I T I O N ________________________________________________

Bool usb_user_read_request(U8, U8);
void usb_user_endpoint_init(U8);
U8 usb_user_interface_get(U16 wInterface);
void usb_user_interface_reset(U16 wInterface, U8 alternate_setting);
Bool usb_user_get_descriptor(U8, U8);


//! Usb HID Report Descriptor HID generic
typedef struct {
	U8 report[SIZE_OF_REPORT];
} S_usb_hid_report_descriptor;

//! Usb HID Report Descriptor Keyboard                                          
typedef struct {                                                                
#ifdef TG_DESKTOP                                                               
   U8      report[0x3F];                                                        
#else                                                                           
   U8      report[0x3B];                                                        
#endif                                                                          
}  S_usb_hid_report_descriptor_kbd;  

#endif
